Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
Over Uitwisselprofiel Zorgkantoren Inkoopondersteuning en beleidsontwikkeling
- Publicatiedatum:
- 03-10-2025
- Inwerkingtreding:
- 03-10-2025
18.2 Wat is de winst- en verliesrekening o.b.v. Grootboek?
Concepten
Relaties
Eigenschappen
SPARQL query
Code gekopieerd
...Kopieer naar klembord
1# Indicator: Zorgkantoren 18.2.0 - Complete versie met R en S totalen 2# Parameters: ?startperiode, ?eindperiode 3# Ontologie: versie 3.0.0 of nieuwer 4# 5# Deze query berekent de winst- en verliesrekening obv Prismant grootboekrubrieken. 6# Structuur: 3 delen via UNION die alle jaarrekeningposten + totalen genereren 7# Performance: Eén database scan voor alle berekeningen 8 9PREFIX onz-fin: <http://purl.org/ozo/onz-fin#> 10PREFIX onz-g: <http://purl.org/ozo/onz-g#> 11PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 12 13SELECT 14 ?jaarrekeningpost 15 (SUM(?bedrag_rubriek) AS ?bedrag) 16WHERE 17{ 18 { 19 # ================================================================ 20 # DEEL 1: Berekening eindtotalen P, Q, R, S uit ruwe grootboekdata 21 # ================================================================ 22 { 23 # Bereken alle componentbedragen in één database scan voor performance 24 SELECT 25 (SUM(?p_bedrag) AS ?p_totaal) # P Som der bedrijfsopbrengsten 26 (SUM(?q_bedrag) AS ?q_totaal) # Q Som der bedrijfslasten 27 (SUM(?r_i_bedrag) AS ?r_i_totaal) # R.I Opbrengst van vorderingen die tot de vaste activa behoren en van effecten 28 (SUM(?r_ii_bedrag) AS ?r_ii_totaal) # R.II Andere rentebaten en soortgelijke opbrengsten 29 (SUM(?r_iii_bedrag) AS ?r_iii_totaal) # R.III Waardeverandering van vorderingen die tot de vaste activa behoren en van effecten 30 (SUM(?r_iv_bedrag) AS ?r_iv_totaal) # R.IV Rentelasten en soortgelijke kosten 31 (SUM(?s_i_bedrag) AS ?s_i_totaal) # S.I Belastingen (altijd 0, bestaat niet in Prismant) 32 (SUM(?s_ii_bedrag) AS ?s_ii_totaal) # S.II Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen 33 WHERE { 34 # BIND("2024-01-01"^^xsd:date AS ?startperiode) 35 # BIND("2024-12-31"^^xsd:date AS ?eindperiode) 36 # Haal alle 6-cijferige grootboekrubrieken op 37 { 38 SELECT DISTINCT ?rubriek WHERE { 39 ?rubriek a onz-fin:Grootboekrubriek . 40 FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:))) 41 FILTER(REGEX(STRAFTER(STR(?rubriek), STR(onz-fin:)), "^[0-9]{6}$")) 42 } 43 } 44 BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode) 45 46 # Koppel grootboekposten aan rubrieken binnen meetperiode 47 ?grootboek_post a onz-fin:Grootboekpost ; 48 onz-g:partOf ?rubriek ; 49 onz-g:hasDate ?datum ; 50 onz-fin:heeftGeldBedrag ?geld_bedrag . 51 52 FILTER (?datum >= ?startperiode && ?datum <= ?eindperiode) 53 54 # Split bedragen op in componenten voor eindtotaal berekeningen 55 56 # --- P: Bedragen voor eindtotaalberekening --- 57 # P.I: 81xxxx (Netto omzet) 58 # P.IV: 82/83/89/919/920/930 (Overige bedrijfsopbrengsten) 59 BIND( 60 IF( 61 STRSTARTS(?rubriekCode, "81") || 62 STRSTARTS(?rubriekCode, "82") || 63 STRSTARTS(?rubriekCode, "83") || 64 STRSTARTS(?rubriekCode, "89") || 65 STRSTARTS(?rubriekCode, "919") || 66 STRSTARTS(?rubriekCode, "920") || 67 STRSTARTS(?rubriekCode, "930"), 68 ?geld_bedrag, 0) AS ?p_bedrag 69 ) 70 71 # --- Q: Diverse kostenrubrieken --- 72 # Q.II: 417/418 (Kosten uitbesteed werk en andere externe kosten) 73 # Q.III: 411-419 (Lonen en salarissen) 74 # Q.IV: 420/4221/4223-4225/4229 (Sociale lasten) 75 # Q.V: 4226 (Afschrijvingen) 76 # Q.VI: 480-484 (Afschrijvingen op immateriële vaste activa en materiële vaste activa) 77 # Q.IX: 423/43-47/486/489/905/911-915/921/931 (Overige bedrijfskosten) 78 BIND( 79 IF( 80 STRSTARTS(?rubriekCode, "417") || 81 STRSTARTS(?rubriekCode, "418") || 82 STRSTARTS(?rubriekCode, "411") || 83 STRSTARTS(?rubriekCode, "412") || 84 STRSTARTS(?rubriekCode, "413") || 85 STRSTARTS(?rubriekCode, "414") || 86 STRSTARTS(?rubriekCode, "415") || 87 STRSTARTS(?rubriekCode, "416") || 88 STRSTARTS(?rubriekCode, "419") || 89 STRSTARTS(?rubriekCode, "420") || 90 STRSTARTS(?rubriekCode, "4221") || 91 STRSTARTS(?rubriekCode, "4223") || 92 STRSTARTS(?rubriekCode, "4224") || 93 STRSTARTS(?rubriekCode, "4225") || 94 STRSTARTS(?rubriekCode, "4229") || 95 STRSTARTS(?rubriekCode, "4226") || 96 STRSTARTS(?rubriekCode, "480") || 97 STRSTARTS(?rubriekCode, "481") || 98 STRSTARTS(?rubriekCode, "482") || 99 STRSTARTS(?rubriekCode, "483") || 100 STRSTARTS(?rubriekCode, "484") || 101 STRSTARTS(?rubriekCode, "423") || 102 STRSTARTS(?rubriekCode, "43") || 103 STRSTARTS(?rubriekCode, "44") || 104 STRSTARTS(?rubriekCode, "45") || 105 STRSTARTS(?rubriekCode, "46") || 106 STRSTARTS(?rubriekCode, "47") || 107 STRSTARTS(?rubriekCode, "486") || 108 STRSTARTS(?rubriekCode, "489") || 109 STRSTARTS(?rubriekCode, "905") || 110 STRSTARTS(?rubriekCode, "911") || 111 STRSTARTS(?rubriekCode, "912") || 112 STRSTARTS(?rubriekCode, "913") || 113 STRSTARTS(?rubriekCode, "914") || 114 STRSTARTS(?rubriekCode, "915") || 115 STRSTARTS(?rubriekCode, "921") || 116 STRSTARTS(?rubriekCode, "931"), 117 ?geld_bedrag, 0) AS ?q_bedrag 118 ) 119 # R.I: 904xxx (Opbrengst van vorderingen die tot de vaste activa behoren en van effecten) 120 BIND(IF(STRSTARTS(?rubriekCode, "904"), ?geld_bedrag, 0) AS ?r_i_bedrag) 121 # R.II: 900xxx (Andere rentebaten en soortgelijke opbrengsten) 122 BIND(IF(STRSTARTS(?rubriekCode, "900"), ?geld_bedrag, 0) AS ?r_ii_bedrag) 123 # R.III: 903xxx (Waardeverandering van vorderingen die tot de vaste activa behoren en van effecten) 124 BIND(IF(STRSTARTS(?rubriekCode, "903"), ?geld_bedrag, 0) AS ?r_iii_bedrag) 125 # R.IV: 485/901 (Rentelasten en soortgelijke kosten) 126 BIND(IF(STRSTARTS(?rubriekCode, "485") || STRSTARTS(?rubriekCode, "901"), ?geld_bedrag, 0) AS ?r_iv_bedrag) 127 # S.I: Belastingen (bestaat niet in Prismant, altijd 0) 128 BIND(0 AS ?s_i_bedrag) 129 # S.II: 902xxx (Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen) 130 BIND(IF(STRSTARTS(?rubriekCode, "902"), ?geld_bedrag, 0) AS ?s_ii_bedrag) 131 } 132 } 133 134 # Genereer eindtotalen met berekende formules 135 VALUES (?eindtotaal_type ?jaarrekeningpost) { 136 (1 "P Som der bedrijfsopbrengsten") # P totaal 137 (2 "Q Som der bedrijfslasten") # Q totaal 138 (3 "R Resultaat voor belastingen") # P - Q + R.I + R.II - R.III - R.IV 139 (4 "S Resultaat na belastingen") # R - S.I + S.II 140 } 141 142 # Bereken eindtotalen obv formules uit jaarrekening model D 143 BIND( 144 IF(?eindtotaal_type = 1, ?p_totaal, 145 IF(?eindtotaal_type = 2, ?q_totaal, 146 IF(?eindtotaal_type = 3, ?p_totaal - ?q_totaal + ?r_i_totaal + ?r_ii_totaal - ?r_iii_totaal - ?r_iv_totaal, 147 IF(?eindtotaal_type = 4, ?p_totaal - ?q_totaal + ?r_i_totaal + ?r_ii_totaal - ?r_iii_totaal - ?r_iv_totaal - ?s_i_totaal + ?s_ii_totaal, 148 0)))) AS ?bedrag_rubriek 149 ) 150 } 151 UNION 152 { 153 # ======================================================================== 154 # DEEL 2: Individuele jaarrekeningposten uit grootboekdata (bestaande logica) 155 # ======================================================================== 156 { 157 # Aggregeer bedragen per grootboekcategorie 158 SELECT 159 ?categorie 160 (SUM(?geld_bedrag) AS ?bedrag_rubriek) 161 WHERE { 162 # BIND("2024-01-01"^^xsd:date AS ?startperiode) 163 # BIND("2024-12-31"^^xsd:date AS ?eindperiode) 164 # Haal alle 6-cijferige grootboekrubrieken op 165 { 166 SELECT DISTINCT ?rubriek WHERE { 167 ?rubriek a onz-fin:Grootboekrubriek . 168 FILTER(STRSTARTS(STR(?rubriek), STR(onz-fin:))) 169 FILTER(REGEX(STRAFTER(STR(?rubriek), STR(onz-fin:)), "^[0-9]{6}$")) 170 } 171 } 172 BIND(STRAFTER(STR(?rubriek), STR(onz-fin:)) AS ?rubriekCode) 173 174 # Wijs rubriekcodes toe aan jaarrekeningcategorieën 175 BIND( 176 COALESCE( 177 IF(STRSTARTS(?rubriekCode, "81"), "P.I", ?unbound), 178 IF( 179 STRSTARTS(?rubriekCode, "82") || 180 STRSTARTS(?rubriekCode, "83") || 181 STRSTARTS(?rubriekCode, "89") || 182 STRSTARTS(?rubriekCode, "919") || 183 STRSTARTS(?rubriekCode, "920") || 184 STRSTARTS(?rubriekCode, "930"), 185 "P.IV", ?unbound 186 ), 187 IF( 188 STRSTARTS(?rubriekCode, "417") || 189 STRSTARTS(?rubriekCode, "418"), 190 "Q.II", ?unbound 191 ), 192 IF( 193 STRSTARTS(?rubriekCode, "411") || 194 STRSTARTS(?rubriekCode, "412") || 195 STRSTARTS(?rubriekCode, "413") || 196 STRSTARTS(?rubriekCode, "414") || 197 STRSTARTS(?rubriekCode, "415") || 198 STRSTARTS(?rubriekCode, "416") || 199 STRSTARTS(?rubriekCode, "419"), 200 "Q.III", ?unbound 201 ), 202 IF( 203 STRSTARTS(?rubriekCode, "420") || 204 STRSTARTS(?rubriekCode, "4221") || 205 STRSTARTS(?rubriekCode, "4223") || 206 STRSTARTS(?rubriekCode, "4224") || 207 STRSTARTS(?rubriekCode, "4225") || 208 STRSTARTS(?rubriekCode, "4229"), 209 "Q.IV", ?unbound 210 ), 211 IF(STRSTARTS(?rubriekCode, "4226"), "Q.V", ?unbound), 212 IF( 213 STRSTARTS(?rubriekCode, "480") || 214 STRSTARTS(?rubriekCode, "481") || 215 STRSTARTS(?rubriekCode, "482") || 216 STRSTARTS(?rubriekCode, "483") || 217 STRSTARTS(?rubriekCode, "484"), 218 "Q.VI", ?unbound 219 ), 220 IF( 221 STRSTARTS(?rubriekCode, "423") || 222 STRSTARTS(?rubriekCode, "43") || 223 STRSTARTS(?rubriekCode, "44") || 224 STRSTARTS(?rubriekCode, "45") || 225 STRSTARTS(?rubriekCode, "46") || 226 STRSTARTS(?rubriekCode, "47") || 227 STRSTARTS(?rubriekCode, "486") || 228 STRSTARTS(?rubriekCode, "489") || 229 STRSTARTS(?rubriekCode, "905") || 230 STRSTARTS(?rubriekCode, "911") || 231 STRSTARTS(?rubriekCode, "912") || 232 STRSTARTS(?rubriekCode, "913") || 233 STRSTARTS(?rubriekCode, "914") || 234 STRSTARTS(?rubriekCode, "915") || 235 STRSTARTS(?rubriekCode, "921") || 236 STRSTARTS(?rubriekCode, "931"), 237 "Q.IX", ?unbound 238 ), 239 IF(STRSTARTS(?rubriekCode, "904"), "R.I", ?unbound), 240 IF(STRSTARTS(?rubriekCode, "900"), "R.II", ?unbound), 241 IF(STRSTARTS(?rubriekCode, "903"), "R.III", ?unbound), 242 # R.IV: 485/901 (Rentelasten en soortgelijke kosten) 243 IF( 244 STRSTARTS(?rubriekCode, "485") || 245 STRSTARTS(?rubriekCode, "901"), 246 "R.IV", ?unbound 247 ), 248 # S.II: 902 (Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen) 249 IF(STRSTARTS(?rubriekCode, "902"), "S.II", ?unbound), 250 "other" 251 ) AS ?categorie 252 ) 253 FILTER(?categorie != "other") 254 255 # Koppel grootboekposten aan rubrieken binnen meetperiode 256 ?grootboek_post a onz-fin:Grootboekpost ; 257 onz-g:partOf ?rubriek ; 258 onz-g:hasDate ?datum ; 259 onz-fin:heeftGeldBedrag ?geld_bedrag . 260 261 FILTER (?datum >= ?startperiode && ?datum <= ?eindperiode) 262 263 } GROUP BY ?categorie 264 } 265 266 # Map categorieën naar jaarrekeningpost labels 267 VALUES (?categorie ?jaarrekeningpost_child){ 268 ("P.I" "P.I Netto omzet") 269 ("P.IV" "P.IV Overige bedrijfsopbrengsten") 270 ("Q.II" "Q.II Kosten uitbesteed werk en andere externe kosten") 271 ("Q.III" "Q.III Lonen en salarissen") 272 ("Q.IV" "Q.IV Sociale lasten") 273 ("Q.V" "Q.V Pensioenlasten") 274 ("Q.VI" "Q.VI Afschrijvingen op immateriële vaste activa en materiële vaste activa") 275 ("Q.IX" "Q.IX Overige bedrijfskosten") 276 ("R.I" "R.I Opbrengst van vorderingen die tot de vaste activa behoren en van effecten") 277 ("R.II" "R.II Andere rentebaten en soortgelijke opbrengsten") 278 ("R.III" "R.III Waardeverandering van vorderingen die tot de vaste activa behoren en van effecten") 279 ("R.IV" "R.IV Rentelasten en soortgelijke kosten") 280 ("S.II" "S.II Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen") 281 } 282 283 BIND(?jaarrekeningpost_child AS ?jaarrekeningpost) 284 FILTER(BOUND(?jaarrekeningpost)) 285 } 286 UNION 287 { 288 # ======================================================================= 289 # DEEL 3: Volledige lijst van alle jaarrekeningposten (bedrag 0 als fallback) 290 # ======================================================================= 291 BIND(0 AS ?bedrag_rubriek) 292 VALUES ?jaarrekeningpost { 293 # P: Som der bedrijfsopbrengsten 294 "P.I Netto omzet" 295 "P.II Wijziging in voorraden gereed product en onderhanden werk ten opzichte van de voorafgaande balansdatum" 296 "P.III Geactiveerde productie voor het eigen bedrijf" 297 "P.IV Overige bedrijfsopbrengsten" 298 "P Som der bedrijfsopbrengsten" 299 300 # Q: Som der bedrijfslasten 301 "Q.I Kosten van grond- en hulpstoffen" 302 "Q.II Kosten uitbesteed werk en andere externe kosten" 303 "Q.III Lonen en salarissen" 304 "Q.IV Sociale lasten" 305 "Q.V Pensioenlasten" 306 "Q.VI Afschrijvingen op immateriële vaste activa en materiële vaste activa" 307 "Q.VII Overige waardevermindering immateriële vaste activa en materiële vaste activa" 308 "Q.VIII Bijzondere waardevermindering van vlottende activa" 309 "Q.IX Overige bedrijfskosten" 310 "Q Som der bedrijfslasten" 311 312 # R: Financiële baten en lasten 313 "R.I Opbrengst van vorderingen die tot de vaste activa behoren en van effecten" 314 "R.II Andere rentebaten en soortgelijke opbrengsten" 315 "R.III Waardeverandering van vorderingen die tot de vaste activa behoren en van effecten" 316 "R.IV Rentelasten en soortgelijke kosten" 317 "R Resultaat voor belastingen" 318 319 # S: Belastingen en resultaat deelnemingen 320 "S.I Belastingen" 321 "S.II Aandeel in winst/verlies van ondernemingen waarin wordt deelgenomen" 322 "S Resultaat na belastingen" 323 } 324 } 325} 326GROUP BY ?jaarrekeningpost 327ORDER BY ?jaarrekeningpost